<?php
namespace Admin\Controller;
//use Think\Controller;


/**
 * 用户管理展示
 * find()     是查询一条数据
 * select()   是查询所有数据
 */

class UserController extends CommonController {
    //展示首页



    public function list()
    {
      $user =   M()->table('bbs_user')->select();
        //var_dump($userlist);die;

        //------表单模糊搜索方法------
        //给一个空数组
        $where = [];

        if(I('get.search-sort')){
            $where[I('get.search-sort')] = ['like','%'.I('get.keywords').'%'];
            //select * from bbs_user where 字段名 like '%关键字%'
        }
        //var_dump($where);die;

        //------表单模糊搜索方法结束------

        //------分页类方法------
        //分页类
        //使用M方法统计表中的所有数量
        $count = M()->table('bbs_user')->where($where)->count();
        // $count = M('bbs_user')->count();
        // var_dump($count);die();

        //new tp框架的page方法($count = 总条数 3=多少条分一页)
        $p = new \Think\Page($count,3);
        // var_dump($pages);
        //var_dump($pages->firstRow,$pages->listRows);die;

        //使用M方法查询表中的所有方法
        $data = M()->table('bbs_user')->where($where)-> limit($p->firstRow,$p->listRows)->select();
        //var_dump($data);die;

        //------分页类方法结束------

        //-----自定义用户类型给list页面赋值-----
        	//用户类型
			$type_arr = [
				'1'=>'普通用户',
				'2'=>'管理员',
				'3'=>'超级管理员'
            ];
            //var_dump($type_arr);die;

			//状态
			$status_arr = [
				'1'=>'已激活',
				'2'=>'未激活'
			];
            //var_dump($status_arr);die;
			//遍历列表数据
			foreach($data as $k=>$v){
				$v['auth'] = $type_arr[$v['auth']];
				$v['is_active'] = $status_arr[$v['is_active']];
				$data[$k] = $v;
			}
            //-----自定义用户类型给list页面赋值结束-----
            //var_dump($data);die;
       //分配变量
		$this->assign('data',$data);
        $this->assign('show',$p->show());
        $this -> display();
    }

    /**
     * 用户新增页面
     */
    public function create()
    {
        //用户新增显示
        $this->display();
    }

    /**
     * 用户新增的方法
     * $res  是对象
     */
    public function insert()
    {
        // var_dump(I('post.'));die;
        I('POST.uname')?I('POST.upwd'):$this->error('添加信息不能为空');
			$data = I('post.');

            //数据验证
			//判断用户名是否重复
			//select * from bbs_user where uname=$data['uname'] limit 1;
			$res = M()->table('bbs_user')->where(['uname'=>$data['uname']])->find();
			if(!empty($res)){
				$this->error('用户名已存在');

            }

        //补充post丢失的数据 例如 create_time update_time
        $data = I('post.');
        $time  = date('Y-m-d H:i:s',time());
        // var_dump($data);die();
        $data['create_time'] = $time;
        $data['update_time'] = $time;
        // //生成一个数组可以直接添加到数据库
        // $res = M()->table('bbs_user')->create($data);

        //头像上传
        $up = new \Think\Upload();
        $up->$rootpath = './Upload/';
        $up->exts = ['jpg','jpeg','png','gif'];
        $info = $up->Upload();
        // var_dump($up);die;
        if(!$info){
            //echo $up->getError();die;
            $this->error($up->getError());
        }

        //拼接图片的地址和名字
        $data['uface'] = $up->rootPath.$info['uface']['savepath'].$info['uface']['savename'];
        //var_dump($data);

        //生成缩略图    
        $image = new \Think\Image(); //实例化图像处理类
        $image->open($data['uface']); //打开原图
        //缩略图保存路径
        //把缩略图保存路径存到$data里面 然后用save方法保存 同时存进数据库里面
        $data['thumb'] = $up->rootPath.$info['uface']['savepath'].'thumb_'.$info['uface']['savename'];
        $image->thumb(100,100)->save($data['thumb']);

        //数据入库
       $res = M()->table('bbs_user')->add($data);
    //    var_dump($res);die;
       if($res !== false){
        //echo "添加成功";
        //tp的跳转
        $this->success('添加成功','Admin/User/list');
    }else{
        //echo '添加失败';
        $this->error('添加失败');
    }
        // var_dump($_POST);die;

    }

    /**
     * 用户修改
     * $uid  就是地址栏get到的uid
     */
        public  function  edit()
    {
        //地址栏get到uid
        $uid = I('get.uid');
        //var_dump($uid);
    //   $data = M('bbs_user')->find($uid);
    //     var_dump($data);die;
    //  使用M方法查询表里面并且找一条.数据
       $data = M('user')->find($uid);
    //    var_dump($data);die;

       //分配变量
       $this->assign('data',$data);
       //展示页面
        $this->display();
    }

    /*
			处理修改提交的数据
		 */
		public function update(){
			//实例化模型类
			$m = M('user');

			//接收数据
			$uid = I('post.uid');

			$data = I('post.');		//获取所有要修改的数据
			unset($data['uid']);	//去掉主键

			//判断是否有上传新头像，如果没有，就使用原来的头像
			if($_FILES['uface']['error'] != 4){
            $id = I('POST.uid');
			$user = M('user');
			$info = $user->where("uid = {$id}")->find();
                //var_dump($info);die;

			if(!empty($info['uface'])){
				unlink($info['uface']);
                unlink($info['thumb']);
                unlink($info['thumb']);
			}
			//调用自己的方法实现图片上传，缩略图
				$res = $this->myupload();
				$data['uface'] = $res['uface'];
				$data['thumb'] = $res['thumb'];
			}

			//保存新数据
			$res = $m->where(['uid'=>$uid])->save($data);

			if($res === false){
				$this->error('修改失败');
			}
			$this->success('修改成功','/index.php?m=admin&c=user&a=list');

		}

		public function myupload(){
            //处理文件上传
           
			$up = new \Think\Upload();	//实例化上传类
			$up->rootPath = './Uploads/';	//上传路径
			$up->exts = ['jpg','jpeg','png','gif'];		//允许上传的后缀名
			$info = $up->upload();		//上传
			if(!$info){
				//上传失败跳转
				$this->error($up->getError());
			}
			//添加 头像的图片路径
			$data['uface'] = $up->rootPath.$info['uface']['savepath'].$info['uface']['savename'];

			//生成缩略图
			$image = new \Think\Image();	//实例化图像处理类
			$image->open($data['uface']);	//打开原图
			//缩略图保存路径
			$data['thumb'] = $up->rootPath.$info['uface']['savepath'].'thumb_'.$info['uface']['savename'];
			$image->thumb(100,100)->save($data['thumb']);
			return $data;
		}
   

    /**
     * 激活用户
     */
    public function active()
    {
        $uid = I('get.uid');
        // var_dump($uid);
        //点击激活查询uid的数据
        $data = M('user')->where(['uid'=>$uid])->find();
            //var_dump($data);die;
             //如果is_active 等于1 (激活)
        if($data['is_active'] == 1) {
            //就把他改为2 (未激活)
            $data['is_active'] =  2;
            //如果is_active 等于2(未激活)
        }else if($data['is_active'] == 2){
             //就把他改为1(激活)
             $data['is_active'] = 1;
        }

          //获取当前时间
			$date = date('Y-m-d H:i:s',time());

			//禁止短时间内重复刷新
			if(strtotime($date) - strtotime($data['update_time']) <= 1*60){
				$this->error('1分钟内不能重复刷新');
			}
            
			//同步最后修改时间
			$data['update_time'] = $date;

        $res =  M()->table('bbs_user')->where(['uid'=>$uid])->save($data);
        //判断是否执行成功
        if(!$res){
            if($data['is_active'] == 2){
                $this->error('关闭失败');
            }else if($data['is_active'] == 1){
                $this->error('激活失败');

            }
            
        }
              
        if($data['is_active'] == 2){
            $this->success('关闭成功');
        }else if($data['is_active'] == 1){
            $this->success('激活成功');
        }


    }

    /**
     * 用户删除
     */
    public function delete()
    {
        $uid = I('get.uid');
        //var_dump($uid);die;

        //$data = M()->table('bbs_user')->where(['uid' =>$uid])->find();
        $ma = M('user');
         //var_dump($ma);
         $info = $ma->where("uid = {$uid}")->find();
             //var_dump($info);die;
 
         if(!empty($info['uface'])){
             unlink($info['uface']);
             unlink($info['thumb']);
             unlink($info['thumb']);
         }
        $res =  $ma->delete($uid);
        // var_dump($data);
       
        if($res === false){
            $this->error('删除失败');
        }else
        $this->success('删除成功',U('User/list'));
    }
}